using System.Threading.Tasks;

namespace EntityKit.Runtime
{
    /// <summary>
    /// 平台存储适配器接口
    /// </summary>
    public interface IPlatformStorageAdapter
    {
        /// <summary>
        /// 写入文件
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="data">文件数据</param>
        void WriteFile(string path, string data);
        
        /// <summary>
        /// 异步写入文件（不阻塞主线程）
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <param name="data">文件数据</param>
        Task WriteFileAsync(string path, string data);

        /// <summary>
        /// 读取文件
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <returns>文件数据</returns>
        string ReadFile(string path);
        
        /// <summary>
        /// 异步读取文件（不阻塞主线程）
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <returns>文件数据</returns>
        Task<string> ReadFileAsync(string path);

        /// <summary>
        /// 检查文件是否存在
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <returns>是否存在</returns>
        bool FileExists(string path);

        /// <summary>
        /// 删除文件
        /// </summary>
        /// <param name="path">文件路径</param>
        void DeleteFile(string path);
        
        /// <summary>
        /// 异步删除文件（不阻塞主线程）
        /// </summary>
        /// <param name="path">文件路径</param>
        Task DeleteFileAsync(string path);
    }
}